﻿''' <summary>
''' Eine Einheit die vom User erstellt wurden ist!
''' </summary>
''' <remarks></remarks>
Public Class EinheitCustom
    Inherits ObjektEinheit
    Public ProduktionsOrte As String() = {}
    Public Sub New(ByVal neuSpieler As Integer, ByVal neuX As Integer, ByVal neuY As Integer, Optional ByVal HatSichBewegt As Boolean = True)
        MyBase.New(neuSpieler, neuX, neuY, HatSichBewegt)
    End Sub
    Public Sub New(ByVal neuKP As Integer, ByVal neuTreibstoff As Integer, ByVal neuMunition As Integer, ByVal neuSpieler As Integer, ByVal neuBesetzen As Boolean, ByVal neuX As Integer, ByVal neuY As Integer, ByVal Tarnung As Boolean, Optional ByVal HatSichbeWegt As Boolean = True)
        MyBase.New(neuKP, neuTreibstoff, neuMunition, neuSpieler, neuX, neuY, neuBesetzen, HatSichbeWegt, Tarnung)
    End Sub
    Public Sub New(ByVal neuKP As Integer, ByVal neuSpieler As Integer, ByVal neuX As Integer, ByVal neuY As Integer, Optional ByVal HatSichbeWegt As Boolean = True)
        MyBase.New(neuKP, neuSpieler, neuX, neuY, HatSichbeWegt)
    End Sub
    Protected Overrides Sub Datenladen()

    End Sub
    Public Overloads Sub Datenladen(ByVal Datei As String)
        Using R As New IO.StreamReader(Datei, Hauptmenue.Codierung)
            While Not R.EndOfStream
                Dim Z As String = R.ReadLine.Trim
                If Z.StartsWith("'") Then Continue While
                If Z.ToLower.StartsWith("einheitenname:") Then
                    Einheitenname = Z.Remove(0, Z.IndexOf(":") + 1)
                    Continue While
                End If
                If Z.ToLower.StartsWith("einheitenid:") Then
                    EinheitenID = Z.Remove(0, Z.IndexOf(":") + 1)
                    Continue While
                End If
                If Z.ToLower.StartsWith("sprit:") Then
                    SpritMax = Z.Remove(0, Z.IndexOf(":") + 1)
                    Continue While
                End If
                If Z.ToLower.StartsWith("tarnen:") Then
                    KannTarnen = Z.Remove(0, Z.IndexOf(":") + 1)
                    Continue While
                End If
                If Z.ToLower.StartsWith("besetzen:") Then
                    KannBesetzen = Z.Remove(0, Z.IndexOf(":") + 1)
                    Continue While
                End If
                If Z.ToLower.StartsWith("treibstoffverbrauch:") Then
                    Treibeverbrauch = Z.Remove(0, Z.IndexOf(":") + 1)
                    Continue While
                End If
                If Z.ToLower.StartsWith("kosten:") Then
                    Koste = Z.Remove(0, Z.IndexOf(":") + 1)
                    Continue While
                End If
                If Z.ToLower.StartsWith("faehigkeit:") Then
                    Faehigkeit = Z.Remove(0, Z.IndexOf(":") + 1)
                    Continue While
                End If
                If Z.ToLower.StartsWith("bewegungspunkte:") Then
                    Bewegungspunkte = Z.Remove(0, Z.IndexOf(":") + 1)
                    Continue While
                End If
                If Z.ToLower.StartsWith("bewegungsart:") Then
                    Bewegungsart = Z.Remove(0, Z.IndexOf(":") + 1)
                    Continue While
                End If
                If Z.ToLower.StartsWith("sicht:") Then
                    Sicht = Z.Remove(0, Z.IndexOf(":") + 1)
                    Continue While
                End If
                If Z.ToLower.StartsWith("munition:") Then
                    MunitionMax = Z.Remove(0, Z.IndexOf(":") + 1)
                    Continue While
                End If
                If Z.ToLower.StartsWith("waffe1:") Then
                    Waffe1 = Z.Remove(0, Z.IndexOf(":") + 1)
                    Continue While
                End If
                If Z.ToLower.StartsWith("waffe2:") Then
                    Waffe2 = Z.Remove(0, Z.IndexOf(":") + 1)
                    Continue While
                End If
                If Z.ToLower.StartsWith("ladung:") Then
                    Array.Resize(Ladung, Z.Remove(0, Z.IndexOf(":") + 1))
                    Continue While
                End If
                If Z.ToLower.StartsWith("geladeneeinheiten:") Then
                    GeladeneEinheitenIDs = Z.Remove(0, Z.IndexOf(":") + 1).Split("|")
                    If GeladeneEinheitenIDs.Length = 1 Then
                        If String.IsNullOrEmpty(GeladeneEinheitenIDs(0)) Then
                            Array.Resize(GeladeneEinheitenIDs, 0)
                        End If
                    End If
                    Continue While
                End If
                If Z.ToLower.StartsWith("entladungsuntergrund:") Then
                    EntladungsUntergrund = Z.Remove(0, Z.IndexOf(":") + 1).Split("|")
                    If EntladungsUntergrund.Length = 1 Then
                        If String.IsNullOrEmpty(EntladungsUntergrund(0)) Then
                            Array.Resize(EntladungsUntergrund, 0)
                        End If
                    End If
                    Continue While
                End If
                If Z.ToLower.StartsWith("minimalreichweite:") Then
                    MinimaleReichweite = Z.Remove(0, Z.IndexOf(":") + 1)
                    Continue While
                End If
                If Z.ToLower.StartsWith("maximalereichweite:") Then
                    MaximaleReichweite = Z.Remove(0, Z.IndexOf(":") + 1)
                    Continue While
                End If
                If Z.ToLower.StartsWith("explosion:") Then
                    Explosion = Z.Remove(0, Z.IndexOf(":") + 1)
                    Continue While
                End If
                If Z.ToLower.StartsWith("verteidigungstabelle:") Then
                    CreateDeffence(R)
                    Continue While
                End If
                If Z.ToLower.StartsWith("produktionsorte:") Then
                    ProduktionsOrte = Z.Remove(0, Z.IndexOf(":") + 1).Split("|")
                    For I = 0 To ProduktionsOrte.Length - 1
                        ProduktionsOrte(I) = ProduktionsOrte(I).ToUpper
                    Next
                    Continue While
                End If
            End While
            Munition = MunitionMax
            Treibstoff = SpritMax
            BildIDbestimmen()
        End Using
    End Sub
    Public Overloads Sub Datenladen(ByVal ID As Integer)
        Dim E As ObjektEinheit = Objektverwalter.AlleEinheiten(ID).Einheit
        Einheitenname = E.Einheitenname
        EinheitenID = E.EinheitenID
        SpritMax = E.SpritMax
        KannTarnen = E.KannTarnen
        KannBesetzen = E.KannBesetzen
        Treibeverbrauch = E.Treibeverbrauch
        Koste = E.Koste
        Faehigkeit = E.Faehigkeit
        Bewegungspunkte = E.Bewegungspunkte
        Bewegungsart = E.Bewegungsart
        Sicht = E.Sicht
        MunitionMax = E.MunitionMax
        Waffe1 = E.Waffen1
        Waffe2 = E.Waffen2
        Array.Resize(Ladung, E.Ladung.Length)
        GeladeneEinheitenIDs = E.GeladeneEinheitenIDs
        EntladungsUntergrund = E.EntladungsUntergrund
        MinimaleReichweite = E.MinimaleReichweite
        MaximaleReichweite = E.Reichweitemax
        Explosion = E.Explosion
        Munition = MunitionMax
        Treibstoff = SpritMax
        BildIDbestimmen()
    End Sub


    Public Shared Sub CreateCustumTabellen(ByVal File As String)
        Using R As New IO.StreamReader(File, Hauptmenue.Codierung)
            While Not R.EndOfStream
                Dim Z As String = R.ReadLine.Trim
                If Z.StartsWith("'") Then Continue While

                If Z.ToLower.StartsWith("angriffstabelle:") Then
                    Dim Tabellenname As String = Z.Remove(0, Z.IndexOf(":") + 1)
                    Tabellenverwalter.AddTabelle(Tabellenname, New AngriffstabelleCustom(R))
                    Continue While
                End If
                If Z.ToLower.StartsWith("bewegungstabelle:") Then
                    Dim Tabellenname As String = Z.Remove(0, Z.IndexOf(":") + 1)
                    Tabellenverwalter.AddTabelle(Tabellenname, New BewegungstabelleCustom(R))
                    Continue While
                End If
            End While
        End Using
    End Sub
    Private Sub CreateDeffence(ByRef Reader As IO.StreamReader)
        While Not Reader.EndOfStream
            Dim Z As String = Reader.ReadLine.Trim
            If Z.StartsWith("'") Then Continue While
            If Z.ToLower.StartsWith("tabellenende") Then Exit While
            Dim Daten As String() = Z.Split(":")
            Tabellenverwalter.setWert(Daten(1), Me.EinheitenID, Daten(1))
        End While
    End Sub

    Dim Baufortschritt As Integer = 0
    ''' <summary>
    ''' Baut eine Temporaere Basis
    ''' </summary>
    ''' <remarks></remarks>
    Public Sub BuildTempBase(ByVal X As Integer, ByVal Y As Integer)
        Baufortschritt += getKP()
        If Baufortschritt >= 20 Then
            Dim L As ObjektLandschaft = Objektverwalter.Spielfeld.Landschaften(X, Y, Objektverwalter.Spielfeld.MomentaneSchlacht)
            Dim ID As String = L.getID
            If ID = "STRAND" Or ID = "SEE" Then
                L.Gebaeude = ObjektLadeklasse.NewGebaeude("TEMPWERFT", Spieler, X, Y, Objektverwalter.Spielfeld.MomentaneSchlacht)
            ElseIf ID = "EBENE" Or ID = "WUESTE" Or ID = "SCHNEE" Then
                L.Gebaeude = ObjektLadeklasse.NewGebaeude("TEMPFLUGHAFEN", Spieler, X, Y, Objektverwalter.Spielfeld.MomentaneSchlacht)
            End If
            Munition = -1
            Baufortschritt = 0
            Besetzen = False
        Else
            Besetzen = True
        End If

    End Sub
    Public Sub StopBuildTempBase()
        Baufortschritt = 0
        Besetzen = False
    End Sub
    Public Function GetBaufortschritt() As Integer
        Return Baufortschritt
    End Function
End Class
